/**
 * \file fs/file.c
 * \author Davide Gessa
 * \date 23-01-10
 */
#include <fs/fs.h>
#include <fs/file.h>

/**
 * Apre un file
 * 
 * \param path path del file
 * \param flags modalita' di apertura
 * \return file descriptor
 */
file_t *fs_open(char *path, char *flags)
{
	file_t  *f = NULL;
	
	// Controlliamo se esiste il file
	
	// Controlliamo se e' possibile aprirlo con quei flags
	
	// Allocchiamo e mettiamolo in lista	
	f = (file_t *) malloc(sizeof(file_t));
	f->next = file_list;
	file_list = f;
	
	// Impostiamo i dati della struttura
	f->id = files_open_n++;
	f->seek_p = 0;
		
	return f;
}




/**
 * Chiude un file
 * 
 * \param f file descriptor
 */
uint32_t fs_close(file_t *f)
{
	free(f);
	
	return 0;
}



/**
 * Legge da file
 * 
 * \param f file descriptor
 * \param buf buffer dove mettere i dati letti
 * \param size quantita' da leggere
 * \return quantita' letta effettivamente
 */
uint32_t fs_read(file_t *f, char *buf, uint32_t size)
{
	return 0;
}




/**
 * Scrive su file
 * 
 * \param f file descriptor
 * \param buf buffer dove prendere i dati
 * \param size quantita' da scrivere
 * \return quantita' scritta effettivamente
 */
uint32_t fs_write(file_t *f, char *buf, uint32_t size)
{
	return 0;
}





/**
 * Modifica il puntatore nel file
 * 
 * \param f file descriptor
 * \param mod modalita' di seek
 * \param offset offset di posizione
 */
uint32_t fs_seek(file_t *f, uint8_t mod, uint64_t offset)
{
	return 0;
}
